(in-package :TRAPS)
; Generated from #P"macintosh-hd:hd3:CInterface Translator:Source Interfaces:IOFireWireBus.h"
; at Sunday July 2,2006 7:28:58 pm.
; 
;  * Copyright (c) 1998-2002 Apple Computer, Inc. All rights reserved.
;  *
;  * @APPLE_LICENSE_HEADER_START@
;  * 
;  * The contents of this file constitute Original Code as defined in and
;  * are subject to the Apple Public Source License Version 1.1 (the
;  * "License").  You may not use this file except in compliance with the
;  * License.  Please obtain a copy of the License at
;  * http://www.apple.com/publicsource and read it before using this file.
;  * 
;  * This Original Code and all software distributed under the License are
;  * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER
;  * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
;  * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
;  * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT.  Please see the
;  * License for the specific language governing rights and limitations
;  * under the License.
;  * 
;  * @APPLE_LICENSE_HEADER_END@
;  
; 
;  * Copyright (c) 1999-2002 Apple Computer, Inc.  All rights reserved.
;  *
;  * HISTORY
;  *
;  
; #ifndef _IOKIT_IOFIREWIREBUS_H
; #define _IOKIT_IOFIREWIREBUS_H

(require-interface "IOKit/IOService")

(require-interface "IOKit/firewire/IOFWIsochChannel")

(require-interface "IOKit/firewire/IOFWAddressSpace")

(require-interface "IOKit/firewire/IOFWCommand")

(require-interface "IOKit/firewire/IOFireWireFamilyCommon")
(def-mactype :gFireWireROM (find-mactype '(:pointer :OSSymbol)))
(def-mactype :gFireWireNodeID (find-mactype '(:pointer :OSSymbol)))
(def-mactype :gFireWireSelfIDs (find-mactype '(:pointer :OSSymbol)))
(def-mactype :gFireWireSpeed (find-mactype '(:pointer :OSSymbol)))
(def-mactype :gFireWireUnit_Spec_ID (find-mactype '(:pointer :OSSymbol)))
(def-mactype :gFireWireUnit_SW_Version (find-mactype '(:pointer :OSSymbol)))
(def-mactype :gFireWireVendor_ID (find-mactype '(:pointer :OSSymbol)))
(def-mactype :gFireWire_GUID (find-mactype '(:pointer :OSSymbol)))
(def-mactype :gFireWireVendor_Name (find-mactype '(:pointer :OSSymbol)))
(def-mactype :gFireWireProduct_Name (find-mactype '(:pointer :OSSymbol)))
(def-mactype :gFireWireModel_ID (find-mactype '(:pointer :OSSymbol)))

#|class IOFireWireDevice;
|#

#|class IOLocalConfigDirectory;
|#

#|class IOFWLocalIsochPort;
|#

#|class IOFireWirePowerManager;
|#

#|class IOFireWireBus;
|#

#|class IOFWDCLPool ;
|#
; #pragma mark -
; ! 
; 	@class IOFireWireBusAux
; 

#|class IOFWBufferFillIsochPort ;
|#
#|
 confused about CLASS IOFireWireBusAux #\: public OSObject #\{ OSDeclareAbstractStructors #\( IOFireWireBusAux #\) friend class IOFireWireBus #\; protected #\:
; ! 
; 			@struct ExpansionData
; 			@discussion This structure will be used to expand the capablilties of the class in the future.
; 		
 struct ExpansionData #\{ #\} #\;
; ! 
; 			@var reserved
; 			Reserved for future use.  (Internal use only)  
; 		
 ExpansionData * reserved #\; public #\: virtual IOFWDCLPool * createDCLPool #\( unsigned capacity #\) const = 0 #\; private #\: OSMetaClassDeclareReservedUsed #\( IOFireWireBusAux #\, 0 #\) #\; OSMetaClassDeclareReservedUnused #\( IOFireWireBusAux #\, 1 #\) #\; OSMetaClassDeclareReservedUnused #\( IOFireWireBusAux #\, 2 #\) #\; OSMetaClassDeclareReservedUnused #\( IOFireWireBusAux #\, 3 #\) #\; OSMetaClassDeclareReservedUnused #\( IOFireWireBusAux #\, 4 #\) #\; OSMetaClassDeclareReservedUnused #\( IOFireWireBusAux #\, 5 #\) #\; OSMetaClassDeclareReservedUnused #\( IOFireWireBusAux #\, 6 #\) #\; OSMetaClassDeclareReservedUnused #\( IOFireWireBusAux #\, 7 #\) #\; OSMetaClassDeclareReservedUnused #\( IOFireWireBusAux #\, 8 #\) #\; OSMetaClassDeclareReservedUnused #\( IOFireWireBusAux #\, 9 #\) #\; OSMetaClassDeclareReservedUnused #\( IOFireWireBusAux #\, 10 #\) #\; OSMetaClassDeclareReservedUnused #\( IOFireWireBusAux #\, 11 #\) #\; OSMetaClassDeclareReservedUnused #\( IOFireWireBusAux #\, 12 #\) #\; OSMetaClassDeclareReservedUnused #\( IOFireWireBusAux #\, 13 #\) #\; OSMetaClassDeclareReservedUnused #\( IOFireWireBusAux #\, 14 #\) #\; OSMetaClassDeclareReservedUnused #\( IOFireWireBusAux #\, 15 #\) #\; OSMetaClassDeclareReservedUnused #\( IOFireWireBusAux #\, 16 #\) #\; OSMetaClassDeclareReservedUnused #\( IOFireWireBusAux #\, 17 #\) #\; OSMetaClassDeclareReservedUnused #\( IOFireWireBusAux #\, 18 #\) #\; OSMetaClassDeclareReservedUnused #\( IOFireWireBusAux #\, 19 #\) #\; OSMetaClassDeclareReservedUnused #\( IOFireWireBusAux #\, 20 #\) #\; OSMetaClassDeclareReservedUnused #\( IOFireWireBusAux #\, 21 #\) #\; OSMetaClassDeclareReservedUnused #\( IOFireWireBusAux #\, 22 #\) #\; OSMetaClassDeclareReservedUnused #\( IOFireWireBusAux #\, 23 #\) #\; OSMetaClassDeclareReservedUnused #\( IOFireWireBusAux #\, 24 #\) #\; OSMetaClassDeclareReservedUnused #\( IOFireWireBusAux #\, 25 #\) #\; OSMetaClassDeclareReservedUnused #\( IOFireWireBusAux #\, 26 #\) #\; OSMetaClassDeclareReservedUnused #\( IOFireWireBusAux #\, 27 #\) #\; OSMetaClassDeclareReservedUnused #\( IOFireWireBusAux #\, 28 #\) #\; OSMetaClassDeclareReservedUnused #\( IOFireWireBusAux #\, 29 #\) #\; OSMetaClassDeclareReservedUnused #\( IOFireWireBusAux #\, 30 #\) #\; OSMetaClassDeclareReservedUnused #\( IOFireWireBusAux #\, 31 #\) #\;
|#
; #pragma mark -
#|
 confused about CLASS IOFireWireBus #\: public IOService #\{ OSDeclareAbstractStructors #\( IOFireWireBus #\) public #\: struct DCLTaskInfoAux #\{ unsigned version #\; union;  u
 #\{ struct                                     ;  v0
 #\{ IOMemoryMap * bufferMemoryMap #\;          ;  This field required to get physical addresses to program DMA.
;  If NULL, we try to make the map ourselves.
;  If you created a buffer memory descriptor
;  for your program's buffers, just call map() on it
;  and pass the returned object here...
 #\} v0 #\; #\} u #\; #\} #\;                   ;  this struct has been redefined for our next generation isochronous architecture,
;  but is backwards compatible with the old definition.. This means we should
;  be safe when an old-style driver is loaded..
;  Make sure all unused fields are set to 0/NULL and that auxInfo points to
;  a valid DCLTaskInfoAux struct, defined above.
;     typedef void (CallUserProc)(void *refcon, void * userProc, void * dclCommand);
 struct DCLTaskInfo #\{ task_t unused0 #\; vm_address_t unused1 #\; UInt32 unused2 #\; vm_address_t unused3 #\; UInt32 unused4 #\; void #\( * unused5 #\) #\( void #\) #\; DCLTaskInfoAux * auxInfo #\;;  Refcon for user call
 #\} #\;                                        ; 	struct DCLTaskInfo {
; 		task_t fTask;	// Task DCL addresses are valid in
; 		vm_address_t fDCLBaseAddr;
; 		UInt32 fDCLSize;	// In bytes
; 		vm_address_t fDataBaseAddr;
; 		UInt32 fDataSize;
; 		CallUserProc *fCallUser; // Routine to handle DCLCallCommandProcs
; 		void *fCallRefCon;	// Refcon for user call
; 	} ;
 static const IORegistryPlane * gIOFireWirePlane #\; IOFireWireBusAux * fAuxiliary #\;;  Create an Isochronous Channel object
 virtual IOFWIsochChannel * createIsochChannel #\( bool doIRM #\, UInt32 bandwidth #\, IOFWSpeed prefSpeed #\, IOFWIsochChannel #\: #\: ForceStopNotificationProc stopProc = NULL #\, void * stopRefCon = NULL #\) = 0 #\;;  Create a local isochronous port to run the given DCL program
 virtual IOFWLocalIsochPort * createLocalIsochPort #\( bool talking #\, DCLCommand * opcodes #\, DCLTaskInfo * info = 0 #\, UInt32 startEvent = 0 #\, UInt32 startState = 0 #\, UInt32 startMask = 0 #\) = 0 #\; virtual IOReturn getCycleTime #\( UInt32 &cycleTime #\) = 0 #\; virtual IOReturn getBusCycleTime #\( UInt32 &busTime #\, UInt32 &cycleTime #\) = 0 #\;;  Methods to manipulate the local Config ROM
 virtual IOReturn AddUnitDirectory #\( IOLocalConfigDirectory * unitDir #\) = 0 #\; virtual IOReturn RemoveUnitDirectory #\( IOLocalConfigDirectory * unitDir #\) = 0 #\;;  Cause a bus reset
 virtual IOReturn resetBus #\( #\) = 0 #\;      ;  Convert a firewire nodeID into the IOFireWireDevice for it
 virtual IOFireWireDevice * nodeIDtoDevice #\( UInt32 generation #\, UInt16 nodeID #\) = 0 #\;;  Execute specified function on workloop after specified delay
;  Returned command is for delay, call it's cancel() function to cancel timeout.
 virtual IOFWDelayCommand * createDelayedCmd #\( UInt32 uSecDelay #\, FWBusCallback func #\, void * refcon #\) = 0 #\; virtual IOFWPhysicalAddressSpace * createPhysicalAddressSpace #\( IOMemoryDescriptor * mem #\) = 0 #\; virtual IOFWPseudoAddressSpace * createPseudoAddressSpace #\( FWAddress * addr #\, UInt32 len #\, FWReadCallback reader #\, FWWriteCallback writer #\, void * refcon #\) = 0 #\;;  Extract info about the async request
 virtual bool isLockRequest #\( IOFWRequestRefCon refcon #\) = 0 #\; virtual bool isQuadRequest #\( IOFWRequestRefCon refcon #\) = 0 #\; virtual UInt32 getExtendedTCode #\( IOFWRequestRefCon refcon #\) = 0 #\;;  How big (as a power of two) can packets sent to/received from the node be?
 virtual int maxPackLog #\( bool forSend #\, UInt16 nodeAddress #\) const = 0 #\;;  How big (as a power of two) can packets sent from A to B be?
 virtual int maxPackLog #\( UInt16 nodeA #\, UInt16 nodeB #\) const = 0 #\;;  Force given node to be root (via root holdoff Phy packet)
 virtual IOReturn makeRoot #\( UInt32 generation #\, UInt16 nodeID #\) = 0 #\;;  Create address space at fixed address in initial register space
 virtual IOFWPseudoAddressSpace * createInitialAddressSpace #\( UInt32 addressLo #\, UInt32 len #\, FWReadCallback reader #\, FWWriteCallback writer #\, void * refcon #\) = 0 #\;;  Get address space object for given address, if any
 virtual IOFWAddressSpace * getAddressSpace #\( FWAddress address #\) = 0 #\;;  Extract info about the async request - was the request ack'ed complete already?
 virtual bool isCompleteRequest #\( IOFWRequestRefCon refcon #\) = 0 #\; virtual IOFWAsyncStreamCommand * createAsyncStreamCommand #\( UInt32 generation #\, UInt32 channel #\, UInt32 sync #\, UInt32 tag #\, IOMemoryDescriptor * hostMem #\, UInt32 size #\, int speed #\, FWAsyncStreamCallback completion = NULL #\, void * refcon = NULL #\) = 0 #\; virtual UInt32 hopCount #\( UInt16 nodeAAddress #\, UInt16 nodeBAddress #\) = 0 #\; virtual UInt32 hopCount #\( UInt16 nodeAAddress #\) = 0 #\; virtual IOFireWirePowerManager * getBusPowerManager #\( void #\) = 0 #\; protected #\: virtual IOFireWireBusAux * createAuxiliary #\( void #\) = 0 #\; public #\: inline IOFWDCLPool * createDCLPool #\( UInt32 capacity = 0 #\) #\{ return fAuxiliary - > createDCLPool #\( capacity #\) #\; #\} private #\: OSMetaClassDeclareReservedUsed #\( IOFireWireBus #\, 0 #\) #\; OSMetaClassDeclareReservedUsed #\( IOFireWireBus #\, 1 #\) #\; OSMetaClassDeclareReservedUsed #\( IOFireWireBus #\, 2 #\) #\; OSMetaClassDeclareReservedUsed #\( IOFireWireBus #\, 3 #\) #\; OSMetaClassDeclareReservedUsed #\( IOFireWireBus #\, 4 #\) #\; OSMetaClassDeclareReservedUsed #\( IOFireWireBus #\, 5 #\) #\; OSMetaClassDeclareReservedUsed #\( IOFireWireBus #\, 6 #\) #\; OSMetaClassDeclareReservedUsed #\( IOFireWireBus #\, 7 #\) #\;
|#

; #endif /* ! _IOKIT_IOFIREWIREBUS_H */


(provide-interface "IOFireWireBus")